<?
/*
 * Classe DAO para a tabela cliente.
 * Data Access Object que irá fazer operações na tabela Cliente (básica: Insert, Update, Delete e Lista)
 */

include_once("../util/PDOConnectionFactory.class.php");

class ContaDAO extends PDOConnectionFactory {
// irá receber uma conexão
    public $conex = null;

    // constructor
    public function __construct() {
        $this->conex = PDOConnectionFactory::getConnection();
    }

    // realiza uma inserção
    public function save( $conta ) {
        try {

            $stmt = $this->conex->prepare("INSERT INTO tb_conta (dataCriacao, tipoConta, login, idPlano, senha, apelido)
                                                                  VALUES (?,?,?,?,?,?)");
            $stmt->bindValue(1, $conta->getDataCriacao() );
            $stmt->bindValue(2, $conta->getTipoConta());
            $stmt->bindValue(3, $conta->getLogin());
            $stmt->bindValue(4, $conta->getIdPlano() );
            $stmt->bindValue(5, $conta->getSenha() );
            $stmt->bindValue(6, $conta->getApelido() );

            $stmt->execute();

            $stmt2 = $this->conex->query(" SELECT LAST_INSERT_ID() AS ID;");

            $plano = 0;
            //sabemos que vai retornar só um registro, mas...
            foreach ($stmt2 as $rows) {
                $plano = $rows["ID"];
            }

            // fecho a conexão
            $this->conex = null;
            return $plano;
        // caso ocorra um erro, retorna o erro;
        }
        catch ( PDOException $ex  ) {
            echo "Erro: ".$ex->getMessage(); }
    }
      public function lista($query=null) {
        try {

            if( $query == null ) {
                $query = " SELECT idConta, dataCriacao, tipoConta, login, senha, 
                           ultimoAcesso, idPlano FROM tb_conta ";
                $stmt = $this->conex->query($query);
            }else {
                $stmt = $this->conex->query($query);
            }
            // desconecta
            $this->conex = null;
            // retorna o resultado da query
            return $stmt;
        }catch( PDOException $ex ) {
            echo "Erro: ".$ex->getMessage();
        }
    }
    /**
     * M�todo faz a autentica��o do usu�rio no sistema
     * @param <Conta> $conta
     * @return <Conta> $conta
     */
    public function autenticar($conta) {
        try {

            $query = " SELECT idConta, apelido, cadastroConfirmado, tipoConta FROM tb_conta where login = ? and senha = ? ";

            $stmt = $this->conex->prepare($query);
            $stmt->bindValue(1, $conta->getLogin() );
            $stmt->bindValue(2, $conta->getSenha());

            $stmt->execute();
            if($stmt->rowCount() == 0) {
                return null;
            }


            foreach ($stmt as $row) {
                $conta->setIdConta($row["idConta"]);
                $conta->setApelido($row["apelido"]);
                $conta->setCadastroConfirmado($row["cadastroConfirmado"]);
                $conta->setTipoConta($row["tipoConta"]);
            }

            // desconecta
            $this->conex = null;
            // retorna o resultado da query
            return $conta;
        }catch( PDOException $ex ) {
            echo "Erro: ".$ex->getMessage();
        }
    }

    public function buscarContaPorId($idConta) {

        try {

            $query = " SELECT idConta, dataCriacao, tipoConta, login, senha, ultimoAcesso, idPlano, 
                       apelido, cadastroConfirmado, nomeDosNoivos, dataEvento, localEventoCerimonia, 
                       localEventoFesta, historia, redeSocialFacebook, redeSocialTwitter, redeSocialOrkut, fotoPerfil, extensaoFoto
                       FROM tb_conta where idConta = :idConta ";

            $stmt = $this->conex->prepare($query);
            $stmt->bindValue(":idConta", $idConta );

            $stmt->execute();
            if($stmt->rowCount() == 0) {
                return null;
            }

            $conta = new Conta();
            foreach ($stmt as $row) {
                $conta->setIdConta($row["idConta"]);
                $conta->setDataCriacao($row["dataCriacao"]);
                $conta->setTipoConta($row["tipoConta"]);
                $conta->setLogin($row["login"]);
                $conta->setSenha($row["senha"]);
                $conta->setUltimoAcesso($row["ultimoAcesso"]);
                $conta->setIdPlano($row["idPlano"]);
                $conta->setApelido($row["apelido"]);
                $conta->setCadastroConfirmado($row["cadastroConfirmado"]);
                $conta->setNomeDosNoivos($row["nomeDosNoivos"]);
                $conta->setDataEvento($row["dataEvento"]);
                $conta->setLocalEventoFesta($row["localEventoFesta"]);
                $conta->setLocalEventoCerimonia($row["localEventoCerimonia"]);
                $conta->setHistoria($row["historia"]);
                $conta->setRedeSocialFacebook($row["redeSocialFacebook"]);
                $conta->setRedeSocialTwitter($row["redeSocialTwitter"]);
                $conta->setRedeSocialOrkut($row["redeSocialOrkut"]);
                $conta->setFotoPerfil($row["fotoPerfil"]);
                $conta->setExtensaoFoto($row["extensaoFoto"]);

            }

            // desconecta
            $this->conex = null;
            // retorna o resultado da query
            return $conta;
        }catch( PDOException $ex ) {
            echo "Erro: ".$ex->getMessage();
        }
    }
    
    public function gravarImagem($imagem, $tipo, $idConta){
       
         try {
              $this->conex = PDOConnectionFactory::getConnection();
              
               $stmt = $this->conex->prepare("UPDATE tb_conta SET fotoPerfil = :binarioFoto, extensaoFoto = :tipoFoto
                                                          WHERE idConta = :idConta");
            $stmt->bindValue(":binarioFoto", $imagem );
            $stmt->bindValue(":tipoFoto", $tipo );
            $stmt->bindValue(":idConta", $idConta );
            
            $stmt->execute();
            // desconecta
            $this->conex = null;
            // retorna o resultado da query
            return $stmt;
        }catch( PDOException $ex ) {
            echo "Erro: ".$ex->getMessage();
        }
    }

    public function atualizarPerfil($conta){
        try {
            $this->conex = PDOConnectionFactory::getConnection();
            $query = "UPDATE tb_conta SET nomeDosNoivos= :nomeDosNoivos,
                            dataEvento = :dataEvento,
                            localEventoCerimonia = :localEventoCerimonia, 
                            localEventoFesta = :localEventoFesta,
                            historia = :historia,
                            redeSocialFacebook = :redeSocialFacebook,
                            redeSocialTwitter = :redeSocialTwitter,
                            redeSocialOrkut = :redeSocialOrkut,
                            tipoConta = :tipoConta
                      where idConta = :idConta ";
            $stmt = $this->conex->prepare($query);

            $stmt->bindValue(":nomeDosNoivos", $conta->getNomeDosNoivos());
            $stmt->bindValue(":dataEvento", $conta->getDataEvento());
            $stmt->bindValue(":localEventoCerimonia", $conta->getLocalEventoCerimonia());
            $stmt->bindValue(":localEventoFesta", $conta->getLocalEventoFesta());
            $stmt->bindValue(":historia", $conta->getHistoria());
            $stmt->bindValue(":redeSocialFacebook", $conta->getRedeSocialFacebook());
            $stmt->bindValue(":redeSocialTwitter", $conta->getRedeSocialTwitter());
            $stmt->bindValue(":redeSocialOrkut", $conta->getRedeSocialOrkut());
            $stmt->bindValue(":tipoConta", $conta->getTipoConta());
            $stmt->bindValue(":idConta", $conta->getIdConta());

            $stmt->execute();

            // fecho a conexão
            $this->conex = null;
        // caso ocorra um erro, retorna o erro;
        }
        catch ( PDOException $ex  ) {
            echo "Erro: ".$ex->getMessage(); }
    }
    
    
    public function montarImagemConta($idConta){
       try{
        $sql = "SELECT extensaoFoto, fotoPerfil FROM tb_conta WHERE idConta = :idConta";
       
        $stmt = $this->conex->prepare($sql);

            $stmt->bindValue(":idConta", $idConta);
            
            $stmt->execute();
           
            if($stmt->rowCount() == 0) {
                return null;
            }

            foreach ($stmt as $row) {
                $extensaoFoto = $row['extensaoFoto'];
                $fotoPerfil = $row['fotoPerfil'];
            }

           if(is_null($extensaoFoto) || is_null($fotoPerfil)){
                echo "/meugrandedia/_img/profile-default.jpg";
                return;
           }
                
           $this->conex = null;
           echo "/meugrandedia/conta/contas/conta_$idConta/".$fotoPerfil;
       }  catch (PDOException $ex){
           echo "Erro: ".$ex->getMessage();
       }
        
    }

}
?>
